#============================================
# 模版语法传值
# {{}:变量相关
# {%%}:逻辑相关

# <p>{{ n }}</p>
# <p>{{ f }}</p>
# <p>{{ s }}</p>
# <p>{{ b }}</p>
# <p>{{ 1 }}</p>
# <p>{{ d }}</p>
# <p>{{ t }}</p>
# <p>{{ se }}</p>
# <p>传递函数名会自动加括号调用但是模版语法不支持给函数传额外的参数:{{ func }}</p>
# <p>传类名的时候也会自动加括号调用(实例化){{ MyClass }}</p>
# <p>内部能够自动判断出当前的变量名是否可以加括号调用如果可以就会自动执行针对的是函
# 数名和类名</p>
# <p>{{ obj }}</p>
# <p>{{ obj.get_ self }}</p>
# <p>{{ obj.get_ func }}</p>
# <p>{{ obj.get_ class }}</p>
# 对象被展示到html就相当于打印，也可以出发__str__方法
# # django模版语法的取值 是固定的格式只能采用"句点符”
# <p>{{ d.username }}</p>
# <p>{{ 1.0 }}</p>
# <p>{{ d. hobby.3.info }}</p>
#即可以点键也可以点索引 还可以两者混用
#============================================
# 过滤器(最多俩个参数 )
# #过滤器就类似于是模版语法内置的内置方法
# # django内置有60多个过滤器我们不需要学这么多了 解10个左右就差不多了后面碰到了再去记忆
# #基本语法
# {{数据|过滤器:参数}}

# #转义
# #前端
# |safe
# #后端
# from django.utils.safestring import mark_safe
# res = mark_ safe('<h1>新新</h1>' )
# 以后你在全栈项目的时候前端代码不一定非要在前端页面书写也可以现在先在后端写好然后传递给前端页面

# <h1>过滤器</h1>
# <p>统计长度:{{ s|length }}</p> 
# <p>默认值(第一个参数布尔值是True就展示第一个参 数的值否在展示冒号后面的值):{{
# b | default: '啥也不是’
# }}</p>
# <p>文件大小:{{ file_ size | filesizeformat }}</p>
# <p>日期格式化:{{ current_ time |date: 'Y-m-d H:i:s' }}</p>
# <p>切片操作(支持步长):{{ l|slice: '0:4:2’}}</p>
# <p>切取字符(包含三个点):{{ info| truncatechars:9 }}</p>
# <p>切取单词(不包含三个点按照空格切):{{ egl | truncatewords:9 }}</p>
# <p>切取单词(不包含三个点按照空格切):{{ info | truncatewords:9 }}</p>
# <p>移除特定的字符:{{ msg|cut:' ’}}</p>
# <p>拼接操作:{{ 1|join:'$' }}</p>
# <p>拼接操作(加法):{{ n|add:10 }}</p>
# <p>拼接操作(加法):{{ s|add:msg }}</p>
# <p>转义:{{ hhh|safe }}</p>
# <p>转义:{{ sss|safe }}</p>
# <p>转义:{{ res }}</p>
#============================================
# 标签
# # for循环
# {% for foo in l %}
# <p>{{ forloop }}</p>
# <p>{{ foo }}</p> - 个个元素
# {% endfor %}
# {' parentloop': {}，' counter0': 0，' counter': 1，' revcounter': 6,
# ' revcounter0': 5，' first': True, 'last': False}
# # if判断
# {% if b %}
# <p>baby</p>

# {% elif s%}
# <p>都来把</p>
# {% else%}
# <p>老baby</p>
# {% endif %}
# # for与if混合使用
# {% for foo in 111号}
# {% if forloop. first %}
# <p>这是我的第一次</p>
# {% elif forloop.last %}
# <p>这是最后- -次啊</p>
# {%else%}
# <p>{{ foo }}</p>
# {% endif %}
# {% empty %}
# <p> for循环的可迭代 对象内部没有元素根本没法循环</p>
# {% endfor %}

# #处理字典其他方法
# {% for foo in d.keys %}
# <p>{{ foo }}</p>
# {% endfor %}
# {%for foo in d.values %}
# <p>{{ foo }}</p>
# {% endfor %}
# {%for foo in d.items %}
# <p>{{ foo }}</p>
# {8 endfor %}

# # with起别名
# {%with d. hobby.3.info as nb %}
# <p>{{ nb }}</p>
# 在with语法内就可以通过as后面的别名快速的使用到前面非常复杂获取数据的方式
# <p>{{ d.hobby.3.info }}</p>
# {%endwith %}
#============================================
# 先三步走
# 1.在应用下创建- -个名字”必须“叫templatetags文件夹
# 2.在该文件夹内创建“任意”名称的py文件eg:mytag .py
# 3.在该py文件内"必须"先书写下面两句话
# from django import template
# register = template.Library( )


# #自定义过滤器(参数最多俩个)
# @register.filter ( name= 'baby')
# def my_ sum(v1， v2) :
# return v1 + v2
# #使用 
# {% load mytag %}
# <p>{{ n|baby:666 }}</p> 

#自定义标签(参数可以有多个)
# 类似于自定义函数
# @register .simple_ tag(name='plus')
# def index(a,b,c,d):
# return' 8s-8s-8s-&s' &(a,b,c,d)
# #使用
# 标签多个参数彼此之间空格隔开
# <p>{% plus ' jason' 123 123 123 %}</p>

# #自定原理inclusion_ tag
# 内部原理
# 先定义一个方法
# 在页面上调用该方法并且可以传值
# 该方法会生成一些数据然后传递给一个htm1页面
# 之后将渲染好的结果放到调用的位置
# @register . inclusion_ tag( 'left_ _menu. html' )
# def left(n):
# data = ['第{}项'.format(i) for i in range(n) ]
# #第一种
# # return { 'data' :data} # 将data传递给left_ menu. html
# #第二种
# return locals() # 将data传递给left_ _menu. html

# {% left 5%}
# #总结:当html页面某一个地方的页面需要传参数才能够动态的渲染出来，并且在多个页面上都需
# 要使用到该局部那么就考虑将该局部页面做成inclusion_ tag形式
# (在讲bbs的时候会使用到)
#============================================
# 模版的继承
# 你们有没有见过-些网站
# 这些网站页面整体都大差不差只是某一些局部在做变化
# #模版的继承你自己先选好一个你要想继承的模版页面
# {% extends ' home. html'%}
# #继承了之后子页面跟模版页面长的是一模一样的你需要在模版页面上提前划定可以被修改的区域

# {% block content %}
# 模版内容
# {% endblock %}

# #子页面就可以声明想要修改哪块划定了的区域
# {% block content %}
# 子页面内容
# {% endblock %}

# #一般情况下模版页面上应该至少有三块可以被修改的区域
# 1. css区域
# 2. htm1区域
# 3. js区域
# {% block css %}
# {% endblock %}

# {% block content %}
# {% endblock %}

# {% block js %}
# {% endblock %}
# 每一-个子页面就都可以有自己独有的css代码html代码js代码
#============================================
# 模版的导入
# 将页面的某--个局部当成模块的形式
# 哪个地方需要就可以直接导入使用即可
# <p>模版的导入</pX
# {% include 'wasai. html' %}
